package model

import "gorm.io/gorm"

// Selling 销售要约
// 需要确定ObjectOfSale是否属于Seller
// 买家初始为空
// Seller和ObjectOfSale一起作为复合键,保证可以通过seller查询到名下所有发起的销售
type Selling struct {
	ObjectOfSale  string  `json:"objectOfSale"`  //销售对象(正在出售的房地产RealEstateID)
	Seller        string  `json:"seller"`        //发起销售人、卖家(卖家AccountId)
	Buyer         string  `json:"buyer"`         //参与销售人、买家(买家AccountId)
	Price         float64 `json:"price"`         //价格
	CreateTime    string  `json:"createTime"`    //创建时间
	SalePeriod    int     `json:"salePeriod"`    //智能合约的有效期(单位为天)
	SellingStatus string  `json:"sellingStatus"` //销售状态
}

// SellingStatusConstant 销售状态
var SellingStatusConstant = func() map[string]string {
	return map[string]string{
		"saleStart": "销售中", //正在销售状态,等待买家光顾
		"cancelled": "已取消", //被卖家取消销售或买家退款操作导致取消
		"expired":   "已过期", //销售期限到期
		"delivery":  "交付中", //买家买下并付款,处于等待卖家确认收款状态,如若卖家未能确认收款，买家可以取消并退款
		"done":      "完成",  //卖家确认接收资金，交易完成
	}
}

// Donating 捐赠要约
// 需要确定ObjectOfDonating是否属于Donor
// 需要指定受赠人Grantee，并等待受赠人同意接收
type Donating struct {
	ObjectOfDonating string `json:"objectOfDonating"` //捐赠对象(正在捐赠的房地产RealEstateID)
	Donor            string `json:"donor"`            //捐赠人(捐赠人AccountId)
	Grantee          string `json:"grantee"`          //受赠人(受赠人AccountId)
	CreateTime       string `json:"createTime"`       //创建时间
	DonatingStatus   string `json:"donatingStatus"`   //捐赠状态
}

// DonatingStatusConstant 捐赠状态
var DonatingStatusConstant = func() map[string]string {
	return map[string]string{
		"donatingStart": "捐赠中", //捐赠人发起捐赠合约，等待受赠人确认受赠
		"cancelled":     "已取消", //捐赠人在受赠人确认受赠之前取消捐赠或受赠人取消接收受赠
		"done":          "完成",  //受赠人确认接收，交易完成
	}
}

type QQLogin struct {
	gorm.Model
	NickName  string `gorm:"type:varchar(20)"`
	OpenId    string `gorm:"type:varchar(100)"`
	AccountId string `gorm:"type:varchar(100)"`
}
type WeChatLogin struct {
	gorm.Model
	NickName  string `gorm:"type:varchar(20)"`
	OpenId    string `gorm:"type:varchar(100)"`
	AccountId string `gorm:"type:varchar(100)"`
}
type House struct {
	gorm.Model
	UserId      string  `gorm:"type:varchar(200);comment:所属用户"`
	UserName    string  `gorm:"type:varchar(200);comment:用户名"`
	Area        float64 `gorm:"type:decimal(10,2);comment:房屋总空间"`
	RealArea    float64 `gorm:"type:decimal(10,2);comment:居住空间"`
	HouseImages string  `gorm:"type:varchar(200);comment:房屋图片"`
	Address     string  `gorm:"type:varchar(200);comment:房屋地址"`
	AsAga       string  `gorm:"type:varchar(5);comment:房屋朝向"`
	Status      int     `gorm:"type:tinyint;default:0;comment:0 待租，1 正在交易，2 已出租，-1已下架"`
	IsRegister  int     `gorm:"type:tinyint;default:0;comment:1 已认证，0 未认证"`
	HouseType   string  `gorm:"type:varchar(200);comment:户型"`
	Floor       int     `gorm:"type:int(11);comment:楼层"`
	HousePrice  float32 `gorm:"type:decimal(10,2);comment:房屋价格"`
	IsFitment   int     `gorm:"type:tinyint(1);comment:1已装修0未装修"`
}
